public class code1 {
    // top 101 二叉树的最大深度

    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @return int整型
     */
    public int maxDepth (TreeNode root) {
        // write code here
        // 题目要求的是尝试获取到二叉树的最大深度
        // 可以通过记录递归的深度，以此来返回对应的最大值
        // 需要注意的一点是，定义的参数值，在递归调用中，直接设置相应的参数是不能通过返回值传递到前面的值中的
        // 这里只是记录一个最大值，直接将数组的长度设置为 1 即可
        int[] max = new int[1];
        // 这里要判断最大值，需要传递三个参数
        getmaxHeight(root, max, 0);
        // 此时这里的返回值是 max[0]
        return max[0];
    }
    private static void getmaxHeight (TreeNode root, int[] max, int num) {
        // 这里不论是哪一种遍历形式，只要能将树进行遍历即可，这里使用的是先序遍历
        if(root == null) {
            return;
        }
        // 后面会多次进行递归调用，这里只要执行一次就说明树深了一层，所以这里设置一个标记进行递增操作
        num++;
        // 进行比较并改最大值
        max[0] = Math.max(max[0],num);
        getmaxHeight(root.left, max, num);
        getmaxHeight(root.right, max, num);
    }
}
